git stash工作区储藏

作者: 李多多 日期: 2019-09-29
Git
git stash工作区储藏

案例分析

现在有两个分支master 和 ha 分支,假设一开始 master 和 ha 分支中的文件内容都是一致的,而且两个分支的工作区都没有东西需要 add/commit ,此时,我在 master 中修改了文件,修改完成之后,执行 git status 命令我们看到 master 中有东西需要 add/commit ,此时我想切换到 ha 分支中去,但是并不想对 master 分支执行 add/commit ,这个时候我们可以执行如下命令,先将当前分支中的文件储藏起来:

$ git stash

执行完 git stash 命令之后,再执行 git status ,我们发现此时 master 分支已经是干净的了,此时我们可以切换到 ha 分中,切换到 ha 分支之后,我们发现 master 中的修改并没有干扰到 ha 分支,当我们完成了 ha 分支中的工作之后,再回到 master 分支,此时执行如下命令可以恢复刚刚储藏的数据(表示恢复最近一次储藏):

$ git stash apply

上面这个命令执行完之后,master 分支中的工作区中的文件就恢复了,此时执行 git status 就可以看到又有数据需要 add/commit 了。上面的过程如下图所示:

image.png

我们也可将工作区储藏多次,这个时候我们可以执行如下命令来查看储藏:

$ git stash list

执行效果如下:

image.png

git stash apply 表示恢复最近一次储藏,如果我们想恢复到之前的某一次储藏,可以加上储藏的名字,如下:

$ git stash apply stash@{1}

还有一些其他的关于储藏的命令:

1. 恢复储藏并出栈

$ git stash pop

执行效果和 git stash apply 一样,不同的是,这里执行完之后,会将栈顶的储藏移除。

2.删除某一个储藏

$ git stash drop stash@{4}

最后一个参数是指储藏的名字。

其它文章:

Git 基本操作
Git 分支管理
Git 关联远程仓库GitHub